import { createMarkdownToVueRenderFn } from './markdownToVue';
import type { MarkdownOptions } from './markdown/markdown';
import type { Plugin } from 'vite';

interface Options {
    root?: string;
    markdown?: MarkdownOptions;
}

export default (options: Options = {}): Plugin => {
    const { root, markdown } = options;
    const markdownToVue = createMarkdownToVueRenderFn(root, markdown);

    return {
        name: 'mdToVue',
        async transform(code, id) {
            if (id.endsWith('.md')) {
                const result = {
                    code: (await markdownToVue(code, id)).vueSrc,
                    map: null,
                };
                // transform .md files into vueSrc so plugin-vue can handle it
                return result;
            }
        },
    };
};
